struct stud{char n[6];int s[4];}aa; 为什么sizeof(aa)的结果是24而不是22?

来源:百度知道 编辑:UC知道 时间:2024/06/10 17:55:10
char 的储存不是1B吗?n[6]应该是6B才对啊,为什么算出来不是22.

这个涉及到编译器对结构成员的内存地址对齐问题

给你推荐一篇文章:
http://wzoot.blog.163.com/blog/static/416388002007111210305852/

另外除了文章中提到的使用#pragma来定义对齐条件外,在vc中也可以通过下面方式指定默认的对齐方式:
Project -> Settings,切换到c/c++标签,Category中选“Code Generation”,"Struct member alignment"中就可以选对齐单位了

你可以
sizeof(char)
和sizeof(int)
分别看一下两个各占多少字节就行了啊、

#include<iostream>
using namespace std;
void main()
{
int a=sizeof(int),b=sizeof(char);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
}
a=4
b=1

存储器地址对齐问题,char b[6]是6个字节没错。但为了4字节对齐,编译器增加了两个空白字节,完成8字节